package com.uzai.console.service.zombiefan;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.uzai.console.dto.device.DeviceQuery;
import com.uzai.console.dto.zombiefan.zombiefantask.ZombieFanTaskDto;
import com.uzai.console.dto.zombiefan.zombiefantask.ZombieFanTaskIdDto;
import com.uzai.console.dto.zombiefan.zombiefantask.ZombieFanTaskIdListDto;
import com.uzai.console.dto.zombiefan.zombiefantask.ZombieFanTaskQuery;
import com.uzai.console.vo.device.DeviceInfoVo;
import com.uzai.console.vo.zombiefan.zombiefantask.ZombieFanTaskVo;

import java.util.List;

/**
 * @author liuqi
 * @date 2021年08月13日 11:33
 */
public interface ZombieFanTaskService {

    /**
     * 查询清理僵尸粉任务列表
     *
     * @param query
     * @return null
     * @author liuqi
     * @date 2021/8/13 11:38
     */
    Page<ZombieFanTaskVo> findZombieFanTaskList(ZombieFanTaskQuery query);

    /**
     * 查询清理僵尸粉任务详情
     *
     * @param groupSendJobIdDto
     * @return null
     * @author liuqi
     * @date 2021/8/13 11:38
     */
    ZombieFanTaskVo findZombieFanTask(ZombieFanTaskIdDto groupSendJobIdDto);

    /**
     * 添加清理僵尸粉任务
     *
     * @param groupSendJobDto
     * @return null
     * @author liuqi
     * @date 2021/8/13 11:38
     */
    void addZombieFanTask(ZombieFanTaskDto groupSendJobDto);

    /**
     * 开始清理僵尸粉任务
     *
     * @param groupSendJobIdDto
     * @return null
     * @author liuqi
     * @date 2021/8/13 11:38
     */
    void startZombieFanTask(ZombieFanTaskIdDto groupSendJobIdDto);

    /**
     * 批量开始清理僵尸粉任务(只能开启未开始和已暂停任务)
     *
     * @param zombiefantaskIdListDto
     * @return null
     * @author liuqi
     * @date 2021/8/13 11:38
     */
    void batchStartGroupSendJob(ZombieFanTaskIdListDto zombiefantaskIdListDto);

    /**
     * 暂停清理僵尸粉任务
     *
     * @param groupSendJobIdDto
     * @return null
     * @author liuqi
     * @date 2021/8/13 11:38
     */
    void pauseZombieFanTask(ZombieFanTaskIdDto groupSendJobIdDto);

    /**
     * 批量暂停清理僵尸粉任务
     *
     * @param zombieFanTaskIdListDto
     * @return null
     * @author liuqi
     * @date 2021/8/13 11:38
     */
    void batchPauseGroupSendJob(ZombieFanTaskIdListDto zombieFanTaskIdListDto);

    /**
     * 删除清理僵尸粉任务
     *
     * @param groupSendJobIdDto
     * @return null
     * @author liuqi
     * @date 2021/8/13 11:38
     */
    void deleteZombieFanTask(ZombieFanTaskIdDto groupSendJobIdDto);

    /**
     * 批量删除清理僵尸粉任务（只支持完成状态）
     *
     * @param zombieFanTaskIdListDto
     * @return null
     * @author liuqi
     * @date 2021/8/13 11:38
     */
    void batchDeleteZombieFanTask(ZombieFanTaskIdListDto zombieFanTaskIdListDto);

    /**
     * 查询群内机器人列表-不分页
     *
     * @param deviceQuery
     * @return null
     * @author liuqi
     * @date 2021/8/13 11:38
     */
    List<DeviceInfoVo> findDeviceList(DeviceQuery deviceQuery);

    /**
     * 修改清理僵尸粉任务
     *
     * @param zombieFanTaskDto
     * @return null
     * @author liuqi
     * @date 2021/8/13 11:38
     */
    void updateZombieFanTask(ZombieFanTaskDto zombieFanTaskDto);

}
